use crate::Bbox;

///图片命名：“025-95_113-154&383_386&473-386&473_177&454_154&383_363&402-0_0_22_27_27_33_16-37-15.jpg”
/// 1. 025：车牌区域占整个画面的比例；
/// 2. 95_113： 车牌水平和垂直角度, 水平95°, 竖直113°
/// 3. 154&383_386&473：标注框左上、右下坐标，左上(154, 383), 右下(386, 473)
/// 4. 386&473_177&454_154&383_363&402：标注框四个角点坐标，顺序为右下、左下、左上、右上
/// 5. 0_0_22_27_27_33_16：
///     车牌号码映射关系如下:
///     第一个0为省份 对应省份字典provinces中的’皖’,；
///     第二个0是该车所在地的地市一级代码，对应地市一级代码字典alphabets的’A’；
///     后5位为字母和文字, 查看车牌号ads字典，如22为Y，27为3，33为9，16为S，最终车牌号码为皖AY339S
///
pub fn parse_bbox_from_filename(filename: &str) -> Result<Bbox, Box<dyn std::error::Error>>  {
    let parts = filename.split("-").collect::<Vec<_>>();

    // 验证是否有足够的部分
    if parts.len() < 3 {
        return Err(format!("Invalid filename format: {}", filename).into());
    }

    // 386&473_177&454_154&383_363&402：标注框四个角点坐标，顺序为右下、左下、左上、右上
    // 解析矩形框坐标
    let bbox_part = parts[2].split('_').collect::<Vec<_>>();
    let left_top = bbox_part[0].split('&').collect::<Vec<_>>();
    let right_bottom = bbox_part[1].split('&').collect::<Vec<_>>();
    Ok(Bbox {
        x1: left_top[0].parse::<i32>()?,
        y1: left_top[1].parse::<i32>()?,
        x2: right_bottom[0].parse::<i32>()?,
        y2: right_bottom[1].parse::<i32>()?,
    })

}